/*  KDevelop 4.3.1
 *  BalancedSmileys.cxx
 *
 *      Author : Pallab
 *      Created on: 1:25:24 PM - 2013:1:26
 *      "I have not failed, I have just found 10000 ways that won't work."
 */
#include <iostream>
#include <algorithm>
#include <vector>
#include <sstream>
#include <fstream>
#include <string>
#include <list>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <numeric>
#include <stack>
#include <functional>
#include <bitset>
#include <iomanip>

#include <ctime>
#include <cassert>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <climits>
#include <cstring>
#include <cstdlib>

using namespace std;


#define foR(i,frm,upto) for( int i=(frm),_i=(upto);(i) < (_i) ; ++i )
#define foD(i,frm,upto) for( int i=(frm),_i=(upto);(i) >= (_i) ; --i )
#define foit(i, x) for (typeof((x).begin()) i = (x).begin(); i != (x).end(); i++)
#define Int long long
#define pb push_back
#define SZ(X) (int)(X).size()
#define LN(X) (int)(X).length()
#define mk make_pair
#define dbg(...)       fprintf(stderr, __VA_ARGS__)
#define SET( ARRAY , VALUE ) memset( ARRAY , VALUE , sizeof(ARRAY) )
#define line puts("")

inline void wait ( double seconds ) {
    double endtime = clock() + ( seconds * CLOCKS_PER_SEC );
    while ( clock() < endtime ) {
        ;
    }
}
template<class T>
    inline T fastIn() {
    register char c=0;
    register T a=0;
    bool neg=false;
    while ( c<33 ) c=getchar();
    while ( c>33 ) {
        if ( c=='-' ) {
            neg=true;
        } else {
            a= ( a*10 ) + ( c-'0' );
        }
        c=getchar();
    }
    return neg?-a:a;
}
string str;
int strLen;
inline void read() {
    getline ( cin,str );
    strLen=LN ( str );
}
inline void proc() {
    stack<char> parenthesis;
    stack<char> reserved ;
    foR ( i,0,strLen ) {
        if ( str[i]==':' ) {
            if ( i+1<strLen && ( str[i+1]=='('||str[i+1]==')' ) ) {
                reserved.push ( ':' );
            }
        }
    }
    foR ( i,0,strLen ) {
        if ( str[i]=='(' ) {
            parenthesis.push ( '(' );
        } else if ( str[i]==')' ) {
            if ( parenthesis.empty() ==false ) {
                parenthesis.pop();
            } else {
                if ( reserved.empty() ==false ) {
                    reserved.pop();
                } else {
                    puts ( "NO" );
                    return ;
                }
            }
        }
    }
    while( parenthesis.empty()==false && reserved.empty()==false ){
        parenthesis.pop();
        reserved.pop();       
    }
    if( parenthesis.empty() ){
        puts("YES");
    }else{
        puts("NO");
    }
}
int main() {
    int kase = 1;
    char const *__IN = "balanced_smileystxt.txt";
    char const *__OUT = "balanced_smileystxt_out.txt";
#if defined( xerxes_pc )
    freopen ( __IN, "r", stdin );
    freopen ( __OUT, "w" ,stdout );
    kase = 1;
#endif
    kase=fastIn<int>();
    for ( int i=1; i<=kase; ++i ) {
        read();
        cout<<"Case #"<<i<<": ";
        proc();
    }
    return 0;
}
// kate: indent-mode cstyle; indent-width 4; replace-tabs on; 



